update on game mechanic spec on actions and time cost and song card.

The Game Board

The game board consists of two DJs setting across from one another at a table, with their "crate" (deck) of cards face down ready for draw and their respective 2 time dice (D6).

Each player has their own queue zone (limit 4) for song cards and playlist zone (no size limit) for song and effect cards, and bin for discarded song, effect, and loop cards. The players share the mixer zone for loop and effect cards (no size limit).

DJs must be careful to sculpt the frequency space perfectly to please the crowd. Playing too loudly will distort the mix and ruin the groove, so mix well!

Setting up the game

Each DJ sets their time dice to value 2 for a total of 6 seconds in each timebank. DJs begin with no parallel seconds. DJs each find up to three samples to put into their queue, leaving one queue slot empty.

DJs do not begin with any cards in hand.

The Win Condition

The game ends when the mixer has been at volume 10 for 3 turns while filling the entire frequency domain (at least one contribution of each Bass, Tenor, Alto, Soprano). The DJ with the most VP at the end of this period is the winning DJ!

Leniant Volume

Once endgame has been triggered by raising the volume to 10, the volume can rise or fall by 1 (to 9 or 11) as long as it returns to 10 the following turn. If at the end of the third turn it remains 10, then the game ends.

This leniance can be managed by abilities that "drive the crowd" (volume greater than 10 are considered equal to 10).

Killing the Groove

When the volume exceeds 10, the mix begins getting distorted and Victory Points begin to degrade. When the frequency space is imbalanced (too many of one kind/exceeds associated data) then you cannot end the night or win the game.

Volume drives endgame state, frequency space is a qualifying condition.

Pseudocode

This section contains rust like data structures for describing some key game objects. Enum ColorQuality { 1,2,3,4,5 } type ColorSet = Vec

// Labels for frequency bins in the game. Associated data is an integer representing the maximum number of contributions of that frequency type. // All song cards and some loop cards contain frequency attribute. // If the sum of a frequency group in the mix exceeds its assocaited value, then the crowd is unsatisfied and no Victory values are enabled/activated. // A minimum of 1 entry is required (one each of Soprano, Alto, Tenor, and Bass) being sent to the mix enum Frequency { Soprano=3, Alto=3, Tenor=3, Bass=3 }

// Four stage volume levels. Associated data represents how much volume this label adds to the mix. When volume exceeds 10, all VP values are decremented by 1 for each volume level above 10 and VictoryCoins are not enabled/activated. enum Volume { Focal=3, Supportive=2, Background=1, Ambient=0 }

struct Card = Song | Effect | Loop

struct MixerSpectrum { Soprano: int, Alto: int, Tenor: int, Bass: int, Volume: int, }

// MVP of the mixer... it is a state machine based on the cards in both DJ playlists and in the "mixer" zone eg loops. // The value only matters when readout to fill a player inquiry or effect resolution, or to determine endgame state. fn get_spectrum(cards:Vec) -> MixerSpectrum

// returns the minimum value in S,A,T,B. Can be zero. fn get_satb(MixerSpectrum) -> int

// int represents constant VP value; PointCondition is a callback that evaluates any dyanmic value. EG 2 VP if played with red blue color qualities, or 1 VP per black track in all playlists enum VictoryPoint(int)

// Dynamic VP value // Victory coins do NOT contribute to the total of 10 required to sustain crowd satisfication. They DO become activated and evaluated once endgame trigger persists for 3 turns as described and the game ends with resolution to identify the winning DJ. // Victory coin values can be determined by cards in your playlist, your queue, your bin, or in the mix (the single shared zone); they cannot refer to cards in your hand, your crate, or your opponent's owned zones. enum VictoryCoin(PointCondition)

enum Song { // Represents a lead, bass, or chordal contribution to the mix. Sample(time_cost, color_set?) // represents a kick, hats, or percussion contribution to the mix. Synth(time_cost, color_set, parallel_time_cost?), }

enum Effect { // Grants the owning DJ an amount of parallel seconds to spend every turn. "expires" at end of turn/does not carry over and resets to the same amount every turn. ProvideParallelSeconds(int), // Grants a time-dice constant discount, optionally applied to matching color_set intersection. DiscountCostSeconds(int, color_set?), // Provides a temporary mixin of a color quality. All songs gain this color quality if not already present to the song. ProvideVirtualColor(color_quality), // Provides a temporary mixin of a color qualities. All songs gain these color qualities if not already present to the song. ProvideVirtualColors(color_set), // Provides a temporary color filter. All songs omit this color quality if it existed. FilterColor(color_quality), // Provides an ability the DJ can use if the InstantCost requriement is met. Applied internally as an InstantBudget object which then is used to activate or perform an immediate followup action, such as playing a sample/synth card at a discounted rate or removing a loop card. DefineActivatedAbility(InstantCost, InstantBudget) }

enum Loop { // Provides a constant amplitude to the mixer Amplitude(Volume), // Provides a constant frequency to the mixer Frequency(Frequency), // Provides a constant color quality for playing song cards Color(ColorQuality) }

struct PlayerState { name: str, bin: Vec, hand: Vec, queue: Vec, playlist: Vec<SongCard|EffectCard> }

struct SongCard { // Decorative name for the song title: str, frequencies: Vec, volume: Volume, // The "color" or "type" of song this is color_qualities_provided: Vec, // The kinds of colors this song cannot mix with, if any. color_interaction_exclusions: Vec, // Value required to spend from time dice to play this song. time_cost: int, // Value required in parallel seconds to play this song. time_cost_parallel: int, // New actions enabled by this song activated_abilities: Option<Vec>, // The value of VP attributed to this DJ vp: Option, // Dynamic values of VP attributed to this DJ vc: Option<Vec> }

EffectCard { // A suggestive name for the effect title: str, // The "color" or "type" of effect sample this is color_qualities_provided: Option<Vec>, // The kinds of colors this sample color_interaction_exclusions: Option<Vec>, time_cost: int, // How many seconds this effect persists. can be a large value like 60, and any action that changes the value of a time dice will consume that magnitude of seconds on this effect's lifetime. When the lifetime counter reaches 0, the effect is overclocked and sent to the bin. lifetime_seconds: Option. time_cost_parallel: int, activated_abilities: Vec, vp: Option, vc: Option<Vec> }

// The exact config required to match color and spend time for a DJ. struct InstantCost { color_qualities_required: Vec, color_qualities_forbidden: Vec, time_cost: int, time_cost_parallel: int, }

// The outcome of an effect or activated ability for immediate followup use. struct InstantBudget { color_qualities_provided: Vec, color_qualities_forbidden: Vec, time_provided: int, time_parallel_provided: int, }

enum volumetatus { Persisted, Fallen, Risen, Muted, }

enum EndgameStage { // Enters the endgame state with a provided volume and frequency space Triggered, // Might have some fluctuation as opposing DJ attempts to regain control. Must make a larger than 1 change in volume; conersely, a DJ may have disabled the ' Pending(volumetatus), // Returning or persistence of statea by end of this turn triggers the endgame resolution to count Victory Points and evaluate Victory Coins. Concluding(StateA) }

fn ActivationEffect(time_cost:int, color_set_required: Vec, color_set_excluded: Vec) -> (InstantBudget -> Action)

Song Card Properties

recall song cards are in two types, samples and synths (beat and instrumental, respectively) and are assigned color quality in the 5 pie system. Here we expand on the mechanics of color value and interaction for playback. color quality is only used to create 5 channels of mixing. we currently assign no flavor, asthetic, or mechanical value or identity to any colors and use it as a taxonomy with 5 enumerable values. choose same values as magic.

Synth Cards

Synth cards have properties frequency, volume, and color. Card art is shown in a spectrogram style, with 4 regions being colored as vertical stacks in a 4 band heatmap.

Every synth card has at least one color quality on it and may contain victory points or conditional / dynamic victory coins. An "average" synth card costs 6 seconds to play, has one color on it, and has no extra abilities or effects. A "short" synth card costs 3 seconds and two colors to play A "long" synth card costs 9 seconds to play

Sample Cards

Sample cards have frequency, volume and clave. Clave is visually represented by MIDI roll drum line (single staff)

Sample cards represent the 'beat' or percussion/drum oriented paterns. Sample cards may or may not have color qualities on it. The major effect of sample cards is to grant parallel seconds; especially large values of parallel seconds for color quality types. This is similar to nonbasic land ramping same-color-valued taps in magic the gathering.

This also enables genre descriptive rhythm assocations. For example: "DnB hi hats" +6ps (parallel seconds) for chartreuse songs (electro-acoustic sounds) "Techno kick" +6ps (parallel seconds) for grey songs (distorted and grungy electric sounds) "Poppy snare" +6ps (parallel seconds) for scarlet songs (popular instruments electro-acoustic features) "Digital Cowbell" +6ps (parallel seconds) for cyan songs (synthesized electric features) "Clap" +6ps (parallel seconds) for brown songs (acoustic human voice/body parts only)

We suggest the axis of electric, electro-acoustic, and acoustic. We also distinguish "brown" as the human element. We dont have to clone MTG we just need the color model. You see now how the colors are intended to associate to those kinds of genres organiezd by acoustic/eletric axis and grittiness/cleanliness of tone quality.

Performing song cards

All song cards are required to instantaneously match the song card they are being played onto by intersection of color qulaity. Formally, Some song SongB can be sent from the queue referencing SongA on the playlist when the following properties are true:

Let A be the values in SongA color set Let B be the values in SongB color set Let K be the intersection of SongA and SongB color sets (common entries among both sets) Let V be the union of SongA and SongB color sets (unique entries among both sets) Let |S| be an operation on set S which defines its magnitude (scalar size) as a discrete positive integer representing the enumerable unique elements in S. Let T be the time cost of the song card Let Q be the player's time dice value

Any one or more of the following must be satisfied { "Identical color space" |K| = |V|

"Threading by color quality",
"Minimizing color space"
|A| + |B| > |V|

"Expanding color space"
|V| < |B|

} AND the following must be satisfied { "Has time to perform the song" Q >= T }

Fading out song cards

If a song card needs to be removed from the playlist, a DJ can spend 2x (twice) the amount of time cost to overclock it and send it to their bin as an action. Only the head and tail song cards can be overclocked by fadeout.

Time cost Actions

A turn consists of any action that changes the value of the time dice. Any action that consumes only parallel seconds does NOT end the turn.

DJs alternate turns by spending time from their time dice to perform song cards or effects, or by selecting from the common set of actions to spend time:

Time Dice Actions

1 second, change tempo: Set a time die you own to any value

Queue actions

These actions consume parallel seconds. If paid by parallel seconds, then they are "extra" actions done before the turn ends (only spending time dice triggers turn end). If paid with time dice, resolving the action ends the turn.

2 parallel seconds, enqueue song: Send a song card from your hand to your queue. 2 parallel seconds, dequeue song: Put a song card from your queue into your hand. 2 parallel seconds, fly in: Send the top card from your crate to to the playlist. If it is a valid play,

X seconds, play song: Spend X time dice, as shown on the card. Play the song from your queue into your playlist and activate any abilities or effects. 2 seconds, swap song: Replace a song from your queue with a song from your hand.

Crate Actions

4 seconds, sort upcoming: Draw the first 6 cards from your crate and put them back in any order. Draw 1 4 seconds, dig for song: Search your crate for a song, put it into your hand. Do not shuffle. 2 seconds, draw top card: Draw the top card of your crate into your hand. 3 seconds, draw top two cards: Draw the top two cards of your crate into your hand. 4 seconds, draw top three cards: Draw the top three cards of your crate into your hand. 5 seconds, draw top four cards: Draw the top four cards of your crate into your hand. 6 seconds, draw top five our cards: Draw the top five cards of your crate into your hand. 3 seconds, shuffle draw: Shuffle your crate and draw the top card

Time Thief

If your opposing DJ has any time dice valued at 2 or 1, you can "borrow" those seconds for yourself when paying a time cost. Once the action is completed, those "borrowed" dice are all set to 6.

*queue is the selection of song cards that are "staged" for the mixer/playlist and are public information without being committed to play. Each player can have up to 4 song cards in their queue.

"the playlist" is the linear sequence of song cards each player is constructing to gain VP, fill the frequency and volume space, and offer activated abilities.

glossary term: "Activated ability" refers to a unique or custom effect which has some cost or activation requirement. Example: Spend 3 seconds, replay an overclocked effect. glossary term: "Bin" aka "The bin" . Functionally identical to the graveyard/discard pile. Cards go face up, order matters, and can be viewd by any player any time. glossary term: "overclocked" when an effect or song becomes irrelevant/stale/overperformed/out of time and is sent to the top of the bin.

Every song card specifies its own time cost but you can say that 6 is a common and default value. the maximum is 18 per player (each gets 2d6 to start, and some effects may grant an additional time die) so you can imagine one DJ who likes ramp style, taking a turn to set die 1 to six; then DJ 2 drops a sample; DJ 1 sets die 2 to six; then DJ 2 plays an effect; then DJ 3 sets die 3 to six; and DJ 2 drops a synth; now DJ 1 can drop a huge 18s sample for mega VP and some crazy good bonus effect like +1(parallel second) to all time die per turn

new glossary term: Parallel second, which represents the idea of playing two tracks at once on the same decks. These are transient seconds that can only be generated and spent same turn, and expire at end of turn unlike time dice which are constant valued until consumed or updated. new glossary term: "Inner Clock" represents a local discrete uniform step monotonic timer, often used for finite second duration effects. Is required to reach an expiry or final steady state value.

some cards grant for example 3 parallel seconds per turn which you can spend on effects and abilities. Song cards require time dice but activated abilities can spend parallel seconds.

To play a song card onto your deck, it must be able to attach to the head or tail of your playlist.

The "Playlist" is a new glossary term that defines the list of active song cards being sent to the mixer. The "Mixer" is a new glossary term that defines the sum of amplitude, frequency, and VP in play.

All values from both playlists get sent to the mixer simultaneously at all times. Each DJ an only play onto their own playlist but can reference the color quality of opposing DJ's playlist at its own instantaneous head/tail when sending a track from the owning DJs queue into the owning DJ's playlist. This means the linear sequence can look 'toothy' or have gaps if using this, to rerepresnt that your play is attached (dependent) to the other DJ's playlist. this is encouraged but needs a better way to represent it so the board is not some gap toothed grid of cards.

tracks MUST have all matching color qualities to be playable. A DJ's queue is a way of hinting the color set that they are playing into at the moment; and they can crate dig (tudor) to replace any card at any time. update on game mechanic spec on actions and time cost.

For songs and effects that cost seconds or virtual seconds to play, any DJ who spends time will progress all inner clocks.

Example Song Cards

color quality reminder { grey (G), brown (B), cyan (C), chartreuse (H), scarlet (S) }

name: Background Beta frequencies: Tenor volume: Background colorQualitiesProvided: brown time_cost: 6 time_cost_parallel: 0 activatedAbilities: None vp: None vc: None

name: Supportive Omega frequencies: Alto volume: Supportive colorQualitiesProvided: brown time_cost: 6 time_cost_parallel: 0 activatedAbilities: None vp: 1 vc: +1 if SATB is 2 or more.

name: Featured Alpha frequencies: Bass volume: Focal colorQualitiesProvided: brown time_cost: 6 time_cost_parallel: 0 activatedAbilities: None vp: 1 vc: +1vp per Bass in the mix

name: Lush Pluck frequencies: Alto volume: Background colorQualitiesProvided: cyan, brown time_cost: 3 time_cost_parallel: 6 activatedAbilities: All synth cards gain cyan. vp: None vc: None

name: Subtle Bassline frequencies: Bass volume: Background colorQualitiesProvided: scarlet time_cost: 3 time_cost_parallel: 6 activatedAbilities: All synth cards gain scarlet. vp: None vc: None

name: Hypnotic Stab frequencies: Tenor volume: Supportive colorQualitiesProvided: chartresuse, cyan time_cost: 3 time_cost_parallel: 3 activatedAbilities: All synth cards gain scarlet. vp: 1 vc: None

name: String Pad frequencies: Soprano volume: Supportive colorQualitiesProvided: chartresuse, brown time_cost: 6 time_cost_parallel: 3 activatedAbilities: Brown songs cost 2 seconds less to perform. vp: 1 vc: None

name: Digibrass frequencies: Tenor, Alto volume: Supportive colorQualitiesProvided: cyan, brown time_cost: 3 time_cost_parallel: 3 time_grant_parllel: 0 activatedAbilities: synth cards gain cyan. vp: None vc: +1 vp for each brown card in your playlist.

name: Trance Kick frequencies: Bass volume: Supportive colorQualitiesProvided: cyan, black time_cost: 3 time_cost_parallel: 3 time_grant_parllel: 3 activatedAbilities: None vp: None vc: None

name: DigiTom frequencies: Tenor volume: Supportive colorQualitiesProvided: cyan, chartreuse time_cost: 3 time_cost_parallel: 3 time_grant_parllel: 3 activatedAbilities: None vp: None vc: None

name: 808 Cowbell frequencies: Alto volume: Supportive colorQualitiesProvided: cyan, brown time_cost: 3 time_cost_parallel: 3 time_grant_parllel: 3 activatedAbilities: None vp: None vc: None

name: E-Ride frequencies: Soprano volume: Supportive colorQualitiesProvided: cyan, scarlet time_cost: 3 time_cost_parallel: 3 time_grant_parllel: 3 activatedAbilities: None vp: None vc: None

struct SongCard { // Decorative name for the song title: str, instrument: InstrumentType frequencies: Vec, volume: Volume, // The "color" or "type" of song this is color_qualities_provided: Vec, // The kinds of colors this song cannot mix with, if any. color_interaction_exclusions: Vec, // Value required to spend from time dice to play this song. time_cost: int, // Value required in parallel seconds to play this song. time_cost_parallel: int, // The value of parallel seconds provided to the owning DJ per turn this song is in the playlist. time_grant_parallel: int, // New actions enabled by this song activated_abilities: Option<Vec>, // The value of VP attributed to this DJ vp: Option, // Dynamic values of VP attributed to this DJ vc: Option<Vec> }

Example Effect Cards

Effect cards mutate the instantaneous state of the game. These are applied at times of paying cost or determining qualifiers for effects & resolutions; not attached to object state or permanence. In other words, effects are modifiers (offsets) not inhereted mutators.

Effects that specify "All" are targeting both DJ's owned assets; if instead the effect specifies "all of your" it then refers to only your own owned assets (other DJ is not affected by the effect resolution).

title: highpass riser color_qualities_provided: None color_interaction_exclusions: None time_cost: 0 time_cost_parallel: 3 lifetime_seconds: Some(12) activated_abilities: { while in effect, all synth songs lose color of DJ's choice (color filter X) } vp: Some(2)

title: lowpass riser color_qualities_provided: None color_interaction_exclusions: None time_cost: 0 time_cost_parallel: 3 lifetime_seconds: Some(12) activated_abilities: { while in effect, all sample songs lose color of DJ's choice (color filter X) } vp: Some(2)

title: hard cut tremelo color_qualities_provided: grey color_interaction_exclusions: None time_cost: 0 time_cost_parallel: 4 lifetime_seconds: Some(16) activated_abilities: { while in effect, all songs lose brown and gain grey }

title: dirty distortion color_qualities_provided: grey // Cannot be used if there are brown cards in play color_interaction_exclusions: brown time_cost: 0 time_cost_parallel: 2 lifetime_seconds: Some(8) activated_abilities: { while in effect, all of your songs gain black } vc: Some( { +1 vp per cyan song in your playlist } )

title: formant filter color_qualities_provided: brown color_interaction_exclusions: None time_cost: 0 time_cost_parallel: 2 lifetime_seconds: Some(8) activated_abilities: { while in effect, black and blue songs also behave as brown } vp: Some(1) vc: Some( { +1 vp per brown song in your playlist } )

title: Hands on edge color_qualities_provided: None color_interaction_exclusions: None time_cost: 0 time_cost_parallel: 3 lifetime_seconds: Some(12) activated_abilities: None vp: None vc: Some( { +1 vp per song in your queue } )

title: Well Tempered Timing color_qualities_provided: None color_interaction_exclusions: brown time_cost: 12 time_cost_parallel: 0 lifetime_seconds: Some(6) activated_abilities: None vp: None vc: Some( { +1 vp per song in your bin and the mix } )

title: Extra Hands color_qualities_provided: None color_interaction_exclusions: brown time_cost: 0 time_cost_parallel: 6 lifetime_seconds: Some(24) activated_abilities: Some( { activated ability 2 parallel seconds: draw one card } ) vp: 1 vc: None

EffectCard { // A suggestive name for the effect title: str, // The "color" or "type" of effect sample this is color_qualities_provided: Option<Vec>, // The kinds of colors this sample color_interaction_exclusions: Option<Vec>, time_cost: int, // How many seconds this effect persists. can be a large value like 60, and any action that changes the value of a time dice will consume that magnitude of seconds on this effect's lifetime. When the lifetime counter reaches 0, the effect is overclocked and sent to the bin. lifetime_seconds: Option. time_cost_parallel: int, activated_abilities: Vec, vp: Option, vc: Option<Vec> }